package com.shm.t360;

import java.util.Scanner;

/**
 * 乌龟爬
 * 时间限制： 3000MS
 * 内存限制： 786432KB
 * 题目描述：
 * 一只乌龟来到了图论森林游玩。图论森林可以被抽象地看作有n个点m条带权无向边的简单图，没有自环没有重边。乌龟需要从s点到达t点。森林里居住了很多兔子，乌龟在经过一条边时会因为爬得太慢而受到边上兔子们的嘲笑，一条边上兔子数量为这条边的边权。
 *
 * 乌龟想承受尽可能少的嘲笑，它想找到一条从起点到终点的路径，路径上有一条边的兔子是这条路径所有边中最多的，它想让这个值尽可能少，请问最少是多少。
 *
 *
 *
 * 输入描述
 * 第一行四个数n,m,s,t。
 *
 * 接下来m行，每行三个数u,v,w，表示u和v之间有一条边权为w的无向边。
 *
 * 输入保证s点和t点连通。
 *
 * 1≤n≤100,000；0≤m≤200,000；1≤w≤1,000,000,000
 *
 * 输出描述
 * 一个数表示答案。
 *
 *
 * 样例输入
 * 5 6 1 5
 * 1 5 100
 * 1 2 10
 * 2 5 5
 * 1 3 3
 * 3 4 2
 * 4 5 1
 * 样例输出
 * 3
 *
 * 提示
 * 输入样例2：
 * 3 2 1 3
 * 1 2 99
 * 2 3 99
 * 1 3 100
 * 输出样例2：
 * 99
 * 样例解释：
 * 对于样例，简单来看乌龟有1-5，1-2-5，1-3-4-5三个方案可以选择。三个方案中最大权值分别为100，10，3，所以最终乌龟选择了第三条路1-3-4-5。
 * @author SHM
 */
public class Main2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        String[] ss = str.split(" ");
        int n = Integer.parseInt(ss[0]);
        int m = Integer.parseInt(ss[1]);
        int s = Integer.parseInt(ss[2]);
        int t = Integer.parseInt(ss[3]);
        int[][] ints= new int[m][3];
        for (int i = 0; i < m; i++) {
            String s1 = sc.nextLine();
            String[] s1s = s1.split(" ");
            ints[i][0] = Integer.parseInt(s1s[0]);
            ints[i][1] = Integer.parseInt(s1s[1]);
            ints[i][2] = Integer.parseInt(s1s[2]);
        }
        int min = min(s, t, ints);
        System.out.println(min);
    }

    public static int min(int s,int t,int[][] ints){
        return ints[t][2];
    }

}
